package heap;

public interface Heap {
	/**
	 * Diz se a heap est� vazia ou nao.
	 * @return
	 */
	public boolean isEmpty();
	
	/**
	 * Insere um objeto na heap e mantem o invariante
	 * @param object
	 */
	public void insert(HeapElement object);
	
	/**
	 * Extrai o elemento maximo da heap e mantem o invariante
	 * @return
	 */
	public HeapElement extractMaximum();
	
	/**
	 * Retorna o elemento com maior chave na heap.
	 * @return
	 */
	public HeapElement maximum();
	
	/**
	 * Ordena os elementos da heap e retorna a heap sob forma de array ordenado.
	 * @return
	 */
	public HeapElement[] heapsort();
}
